package com.mexcad.reports;

import java.io.IOException;
import java.sql.Connection;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;

import org.hibernate.Session;

import com.mexcad.db.connectors.SolicitudConnector;
import com.mexcad.db.dto.Solicitud;
import com.mexcad.db.utils.HibernateUtil;
import com.mexcad.utils.Constantes;
import com.mexcad.utils.Formatter;

public class ContratoReportServlet extends HttpServlet {
		private static final long serialVersionUID = 1L;
		private Session session;
		public static Connection con;

		protected void doPost(HttpServletRequest req, HttpServletResponse res)
				throws ServletException, IOException {
			this.session = HibernateUtil.getSessionFactory().openSession();

			con = this.session.connection();

			ServletContext context = getServletContext();
			String pathReport = context.getRealPath("reports") + Constantes.DIV;
			System.out.println("pathReport: "+pathReport);
			// Parametros
			Map<String,Object> parametros = new HashMap<String, Object>();
			String idSol = req.getParameter("idSolicitud");
			
			Solicitud sol = SolicitudConnector.getSolicitudPorId(new Integer(idSol));
			// Nombre del Reporte
			String sNomRep = null;

			if(sol.getIdTipoContrato() == SolicitudConnector.CONTRATO_TIPO_1){
				sNomRep=Constantes.CONTRATO_1;
			}else if(sol.getIdTipoContrato() == SolicitudConnector.CONTRATO_TIPO_2){
				sNomRep=Constantes.CONTRATO_2;
			}else if(sol.getIdTipoContrato() == SolicitudConnector.CONTRATO_TIPO_3){
				sNomRep=Constantes.CONTRATO_3;
			}else if(sol.getIdTipoContrato() == SolicitudConnector.CONTRATO_TIPO_4){
				sNomRep=Constantes.CONTRATO_4;
			}
	
			
			// parametros a pasar al reporte
	
		//	parametros.put("idCliente", Integer.parseInt(req.getParameter("idCliente")));
			parametros.put("parPath", pathReport);
			parametros.put("rutaImagen",Constantes.RUTA_IMAGENES_REPORTES);
			
			parametros.put("numsolicitud",Integer.parseInt(req.getParameter("idSolicitud")));
		//	parametros.put("numsolicitud", req.getParameter("idSolicitud"));
			
		
		
			try {
				// Ruta y nombre de archivo
						
				//String fileRep = "C:\\proyectos\\grasshopper\\MexCad\\WebContent\\reports\\"+sNomRep;//ParametrosConfigRPC.getPathReportes() + sNomRep;
				
				// se crea el reporte
				JasperPrint imprime = JasperFillManager.fillReport(Constantes.RUTA_JASPER+sNomRep+".jasper", parametros, con);

				// graba el pdf en disco
			//	JasperManager.printReportToPdfFile(imprime, fileRep+".pdf");
				JasperExportManager.exportReportToPdfFile(imprime, pathReport + sNomRep+".pdf");

				// Redireciona al pdf creado
				res.sendRedirect("reports/" + sNomRep + ".pdf");
			} catch (Exception e) {
				res.getWriter().println("Error al generar el reporte: " + e);
			}
		}

		protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
				throws ServletException, IOException {
			doPost(arg0, arg1);
		}
}



/*queryReporte
 * 


select mon.descMoneda,  tipSol.desctiposolicitud, clt.nombreCliente,
esqCred.descesquemacredito, estSol.descestatussolicitud, perSol.descperiodosolicitado,
tasBas.desctasabase, eje.nombres ||' ' ||eje.apellidopaterno ||' ' ||eje.apellidomaterno as nomEjecutivo,
sol.apellidopaterno ||' ' || sol.apellidomaterno ||' ' || sol.nombressolicitante as solicitante
from 

solicitud sol, cat_moneda mon, cat_tiposolicitud tipSol, cliente clt, 
cat_esquemaCredito esqCred, cat_estatussolicitud estSol, cat_periodosolicitado perSol,
cat_tasaBase tasBas,Ejecutivo eje

where 

 mon.idMoneda = sol.idMoneda AND sol.idTipoSOlicitud= tipSol.idTipoSolicitud AND
 clt.idcliente = sol.idCliente AND esqCred.idEsquemaCredito = sol.idEsquemaCredito AND 
 estSol.idestatussolicitud = sol.idestatussolicitud AND 
 perSol.idperiodosolicitado = sol.idperiodosolicitado AND
 tasBas.idtasabase = sol.idtasabase AND
 eje.idEjecutivo = sol.idEjecutivo AND sol.idSolicitud =1
 



 * */

